#include <vector>
#include <map>

#ifndef AGENT_H
#define AGENT_H
#include "Airport.h"
using namespace std;
class Agent
{
    public:
        Agent(double epsilonInput, double alphaInput, double gammaInput, int numStates, int numActions);
        virtual ~Agent();
        map<State*, vector<pair<Actions, double> > > QTable;
        map<State*, double > QTable2;
        void updateReward(State* prevState, int prevAction, State* state, double reward);
        void updateReward(State* prevState, int prevAction, double reward, double nextReward);
        int getAction(State* state, vector<int> possibleActions);
        int greedyGetAction(State* state, vector<int> possibleActions);
        double epsilon;
        double alpha;
        double gamma;
        int numActions;
    protected:
    private:
};

#endif // AGENT_H
